package ifrn.agendaweb.servico;

import ifrn.agendaweb.jpa.UsuarioJPA;
import ifrn.agendaweb.modelo.Usuario;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class UsuarioServico {

	private UsuarioJPA usuarioPersistencia;

	@Autowired
	public void setServicoUsuario(UsuarioJPA usuarioPersistencia) {
		this.usuarioPersistencia = usuarioPersistencia;
	}
	
	public boolean existeEmailCadastrado(Usuario usuario) {
		List<Usuario> usuarios = usuarioPersistencia.recuperarPorEmail(usuario);
		if (usuarios == null || usuarios.isEmpty()) {
			usuarios = null;
			return false;
		}
		return true;
	}
	
	public boolean existeLoginCadastrado(Usuario usuarioP) {
		Usuario usuario = usuarioPersistencia.recuperarPorLogin(usuarioP);
		if (usuario == null) {
			return false;
		}
		return true;
	}

	
	public void criar(Usuario usuario) throws ServicoException {
		
		if (this.existeEmailCadastrado(usuario)) {
			throw new ServicoException("Já existe usuário cadastrado com esse e-mail.");
		}
		
		if (this.existeLoginCadastrado(usuario)) {
			throw new ServicoException("Já existe usuário cadastrado com esse login.");
		}
		
		usuarioPersistencia.criar(usuario);
	}

	public Usuario recuperarUsuario(Usuario usuario) throws ServicoException {
		try {
			return usuarioPersistencia.recuperarPorId(usuario);
		} catch (Exception e) {
			e.printStackTrace();
			throw new ServicoException(e.getMessage());
		}
	}
	
	public Usuario recuperarUsuarioPorLogin(Usuario usuario) throws ServicoException {
		try {
			return usuarioPersistencia.recuperarPorLogin(usuario);
		}catch (Exception e) {
			throw new ServicoException(e.getMessage());
		}
	}
	
	
	public Usuario autenticar(Usuario usuarioP) {
		
		Usuario usuario = usuarioPersistencia.recuperarPorLogin(usuarioP);
		
		if (usuarioP.getSenha().equals(usuario.getSenha())) {
			return usuario;
		}
		
		return null;
	}

}
